package br.com.localfloripa.entities;

import java.io.Serializable;
import java.util.ResourceBundle;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Transient;

@Entity
@Table(name="avaliacao")
public class Avaliacao implements Serializable {

	private static final long serialVersionUID = 9038124643746177244L;
	
	@SequenceGenerator(name="Avaliacao_Seq",sequenceName="avaliacao_seq")
	@Id @GeneratedValue(generator="Avaliacao_Seq")
	private Long id;
	@Column(name="nome",nullable=false)
	private String nome;
	@Column(name="email",nullable=false)
	private String email;
	@Column(name="descricao",nullable=false)
	private String descricao;
	@Enumerated(value=EnumType.STRING)
	private TipoAvaliacao tipo;
	@Column(name="classificacao",nullable=false)
	private Double classificacao;
	
	public Avaliacao() {
		
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public TipoAvaliacao getTipo() {
		return tipo;
	}

	public void setTipo(TipoAvaliacao tipo) {
		this.tipo = tipo;
	}

	public Double getClassificacao() {
		return classificacao;
	}

	public void setClassificacao(Double classificacao) {
		this.classificacao = classificacao;
	}
	
	@Transient
	public String getTipoAvaliacao() {
		return this.tipo.value();
	}
	
	@Transient
	public String getDescClassificacao() {
		
		ResourceBundle bundle = ResourceBundle.getBundle("messages.MessageResources");
		
		switch (this.classificacao.intValue()) {
		case 1: return bundle.getString("search.anuncio.comentario.rate.pessimo");			
		case 2: return bundle.getString("search.anuncio.comentario.rate.ruim");
		case 3: return bundle.getString("search.anuncio.comentario.rate.bom");
		case 4: return bundle.getString("search.anuncio.comentario.rate.muitobom");
		case 5: return bundle.getString("search.anuncio.comentario.rate.otimo");
		default:
			return null;
		}				
	}
	
}
